package sanshui.system.trade.model;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import sanshui.system.trade.factory.data.DataMarketType;
import sanshui.system.trade.factory.data.FilterModel;
import sanshui.system.trade.factory.data.TradeMarketKey;
import sanshui.system.trade.factory.data.TradeSystemType;
import sanshui.system.trade.factory.trade.riskCtr.RiskCtrCode;
import sanshui.system.trade.factory.trade.strategy.StrategyCode;
import sanshui.system.trade.factory.trade.strategy.TradeStrategy;

import java.util.List;

@Data
@Builder
@ApiModel(description = "交易Worker")
@ToString
public class TradeSysWorkerModel {
    Long workerId;
    @ApiModelProperty(value = "交易市场：A、OKEY")
    TradeMarketKey tradeMarketKey;
    @ApiModelProperty(value = "交易系统：回测、实时")
    TradeSystemType tradeSystemType;
    @ApiModelProperty(value = "交易市场数据类型：T0、T1")
    DataMarketType dataMarketType;
    @ApiModelProperty(value = "T1周期，需要定一个执行时间HHmmss")
    String exeTime4ForT1;
    @ApiModelProperty(value = "worker名称")
    String workerName;
    @ApiModelProperty(value = "多个指标")
    List<String> indicatorCodes;
    @ApiModelProperty(value = "多个标的")
    List<String> targetCodes;
    @ApiModelProperty(value = "指数，如属于沪深300的标的")
    List<String> targetCodesIndex;
    @ApiModelProperty(value = "交易策略code")
    StrategyCode tradeStrategyCode;
    @ApiModelProperty(value = "风控策略code")
    RiskCtrCode riskCtrCode;
    @ApiModelProperty(value = "需要睡眠时间")
    long millis;
    @ApiModelProperty(value = "需要过滤的板块：创业板？科创板？")
    FilterModel filterModel;
    @ApiModelProperty(value = "交易账户信息")
    TradeAccountModel tradeAccountModel;
    @ApiModelProperty(value = "1m,5m,1d")
    public String frequency;
    @ApiModelProperty(value = "开始时间")
    public String startTime16;
}
